﻿namespace DotNetStar.OpenSDK.Payment
{
    /// <summary>
    /// 表示第三方平台支付的请求基类。
    /// </summary>
    /// <typeparam name="TResponse">The type of the response.</typeparam>
    /// <seealso cref="DotNetStar.OpenSDK.ApiRequest{TResponse}" />
    public abstract class PaymentApiRequest<TResponse> : ApiRequest<TResponse>
    {
        /// <summary>
        /// 初始化 <see cref="PaymentApiRequest{TResponse}" /> 类的新实例。
        /// </summary>
        /// <param name="requestUrl">支付平台请求的地址。</param>
        /// <param name="config">支付平台商家的配置。</param>
        /// <param name="signatureHasher">表示签名的算法实例。</param>
        public PaymentApiRequest(string requestUrl, PaymentConfig config, ISignatureHasher signatureHasher) : base(requestUrl)
        {
            this.Config = config;
            this.SignatureHasher = signatureHasher;
        }

        /// <summary>
        /// 获取支付平台商家的配置。
        /// </summary>
        [ArgumentIgnore]
        public PaymentConfig Config { get; }

        /// <summary>
        /// 获取签名哈希算法的计算器。
        /// </summary>
        [ArgumentIgnore]
        public ISignatureHasher SignatureHasher { get; }
    }
}
